2022a 第13回:Python 関数の定義
小テスト
前回授業の復習
じゃんけんの勝敗判定方法テクニック
グー = 0, パー = 1, チョキ = 2と定義する
あいこ:(3 + 自分の手 - 相手の手) % 3 == 0
勝ち:(3 + 自分の手 - 相手の手) % 3 == 1
負け:(3 + 自分の手 - 相手の手) % 3 == 2
e.g. 自分がグー、相手がパー
(3 + 0 - 1) % 3 = 2 => 勝ち
e.g. 自分がグー、相手がチョキ
(3 + 0 - 2) % 3 = 1 => 勝ち
Python応用編
レトロゲームを作る (情報基礎2でやるやつ)
例えば、オセロゲームを自分で作ることができます
コードは情報基礎2でカンニングされると困るのでコードの公開はご容赦
置ける場所の提案機能、勝敗判定、自動パス等一通り実装済み
https://gyazo.com/caa71ea8d1b306a0dc826aaf67c93ac0
オセロの盤面を昨日教えた「リストのリスト」で実現している
code:python
width = 8
height = 8
board = []
# 横にwidth個、縦にheight個のリストのリストを作成
for x in range(width):
board.append([])
for y in range(height):
# 最初のコマ4つを配置
## boardの値はこんな感じになる
ちなみにオセロの勝利判定は「プレイヤーが2人ともコマを置けずパスしたとき」になります
講義最終回
複雑な処理を書く際には処理を特定の団子にまとめてあげなければ意味不明になっていく
意味のある単位でコードをまとめ、再利用性を高める手段が「関数」
code:python
if len(numbers) == 0: # 要素がなければ合計は0
return 0
else: # 要素が1つ以上あれば…
a = numbers.pop() # 末尾の数字1つを取り出して
return a + sum(numbers) # a + 1つ短くなったnumbersの合計値
sum(0,1,2,3,4,5,6,7,8,9,10) # 55 同じ処理を複数回繰り返すなら、関数に切り出そう
処理を書き換えたいときに、修正漏れが起こらないように…